<?php

/*
 * Condições do teste:
 *
 * - O usuário "fabiofeliciano@di.ufpb.br" está associado com a senha "123456"
 *
 *
*/

require_once 'PHPUnit/Extensions/SeleniumTestCase.php';

class TesteAlterarDadosUsuario extends PHPUnit_Extensions_SeleniumTestCase{
    
    protected function setUp() {
    
        $this->setBrowser("*firefox");
        $this->setBrowserUrl("http://localhost/");

    }
    
    public function logonUser(){

        $this->open("/usuario/alterar-dados");
        $this->waitForPageToLoad("30000");
        $this->type("email", "fabiofeliciano@di.ufpb.br");
        $this->type("senha", "123456");
        $this->click("submit");
        $this->waitForPageToLoad("30000");

    }

    public function testSenhaIncorreta(){

        $this->logonUser();
        $this->waitForPageToLoad("30000");
        $this->type("senha", "12345678");
        $this->type("nova_senha", "dfasfd");
        $this->type("confirma_senha", "dfasfdsaf");

        $this->click("submit");

        $this->waitForPageToLoad("30000");

        try {
            $this->verifyTextPresent($this->isTextPresent("Senha inválida!"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }

    }

    public function testSenhaComTamanhoInferiorAoMinimo(){

        $this->logonUser();
        $this->waitForPageToLoad("30000");
        $this->type("senha", "123456");
        $this->type("nova_senha", "123");
        $this->type("confirma_senha", "123");

        $this->click("submit");

        $this->waitForPageToLoad("30000");

        try {
            $this->verifyTextPresent($this->isTextPresent("O tamanho de!"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }

        try {
            $this->verifyTextPresent($this->isTextPresent("é inferior a 6 caracteres"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }

    }
    
    public function testCampoNomeEmBranco(){
        
        $this->logonUser();
        $this->waitForPageToLoad("30000");
        $this->type("nome", "");
        $this->type("senha", "123456");
        $this->type("nova_senha", "123");
        $this->type("confirma_senha", "123");

        $this->click("submit");

        $this->waitForPageToLoad("30000");

        try {
            $this->verifyTextPresent($this->isTextPresent("O valor é obrigatório e não pode estar vazio"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
            
    }
    
    public function testCampoSenhaEmBranco(){
        
        
        $this->logonUser();
        $this->waitForPageToLoad("30000");
        $this->type("senha", "");
        $this->type("nova_senha", "123");
        $this->type("confirma_senha", "123");

        $this->click("submit");

        $this->waitForPageToLoad("30000");

        try {
            $this->verifyTextPresent($this->isTextPresent("O valor é obrigatório e não pode estar vazio"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
            
    }

    public function testSenhasDiferentes(){

        $this->logonUser();
        $this->waitForPageToLoad("30000");
        $this->type("senha", "123456");
        $this->type("nova_senha", "1234567");
        $this->type("confirma_senha", "12345678");

        $this->click("submit");

        $this->waitForPageToLoad("30000");

        try {
            $this->verifyTextPresent($this->isTextPresent("Confirmação não confere!"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }

        try {
            $this->verifyTextPresent($this->isTextPresent("Digite novamente!"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }

    }

    public function testAlteraNomeComSucesso(){

        $this->logonUser();

        $this->waitForPageToLoad("30000");
        $this->type("nome", "Fabio2");
        $this->type("senha", "123456");
       
        $this->click("submit");

        $this->waitForPageToLoad("30000");

        try {
            $this->verifyTextPresent($this->isTextPresent("Dados alterados com sucesso!"));
           

        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }

        //Desfaz a alteracao do nome
         $this->desfazAlteracaoDoNome();

    }

    
     public function testAlterarSenhaComSucesso(){

        $this->logonUser();
        $this->waitForPageToLoad("30000");
        $this->type("senha", "123456");
        $this->type("nova_senha", "1234567");
        $this->type("confirma_senha", "1234567");

        $this->click("submit");

        $this->waitForPageToLoad("30000");

        try {
            $this->verifyTextPresent($this->isTextPresent("Dados alterados com sucesso!"));
            
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }

        $this->desfazAlteracaoDaSenha();
        
    }

    public function desfazAlteracaoDoNome(){

        $this->open("/usuario/alterar-dados");

        $this->type("nome", "Fabio Feliciano");
        $this->type("senha", "123456");

        $this->click("submit");

    }

    public function desfazAlteracaoDaSenha(){

        $this->open("/usuario/alterar-dados");
        $this->waitForPageToLoad("30000");
        $this->type("senha", "1234567");
        $this->type("nova_senha", "123456");
        $this->type("confirma_senha", "123456");
        $this->click("submit");

    }
  

}
?>
